Logging হল সফটওয়্যার ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ, যা অ্যাপ্লিকেশন চলাকালীন বিভিন্ন ইভেন্ট এবং ত্রুটি ট্র্যাক করতে সহায়তা করে। ASP.NET Core অ্যাপ্লিকেশনগুলিতে লগিং খুবই গুরুত্বপূর্ণ, কারণ এটি ডিবাগিং, ত্রুটি চিহ্নিতকরণ এবং অ্যাপ্লিকেশনের পারফরম্যান্স মনিটরিং করার জন্য ব্যবহৃত হয়। NLog এবং Serilog হল দুটি জনপ্রিয় logging framework যা ASP.NET Core-এ ব্যবহৃত হয়।
এগুলো আপনাকে বিভিন্ন ধরনের লগ আউটপুট (ফাইল, ডাটাবেস, কনসোল, নেটওয়ার্ক, ইত্যাদি) তৈরি করতে এবং লগ স্তর নির্ধারণ করতে সহায়তা করে।
NLog একটি শক্তিশালী এবং কনফিগারেবল logging framework যা আপনাকে লগিং এর জন্য বিভিন্ন আউটপুট টার্গেট সেট করার সুযোগ দেয়। এটি খুবই জনপ্রিয় এবং সহজে কনফিগার করা যায়।
NLog প্যাকেজ ইনস্টল করা
প্রথমে, NLog এবং NLog.Web.AspNetCore প্যাকেজগুলি ইনস্টল করতে হবে। NuGet Package Manager বা .NET CLI ব্যবহার করা যায়।
NuGet CLI:
Install-Package NLog.Web.AspNetCore
.NET CLI:
dotnet add package NLog.Web.AspNetCore
NLog কনফিগারেশন ফাইল তৈরি করা
একটি nlog.config
ফাইল তৈরি করুন অ্যাপ্লিকেশনের রুট ডিরেক্টরিতে। এই ফাইলটি NLog এর কনফিগারেশন ধারণ করে, যেমন কোথায় লগ ফাইল লিখতে হবে এবং লগ স্তর কী হবে।
উদাহরণস্বরূপ, একটি সাধারণ nlog.config
ফাইল:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<targets>
<target name="logfile" xsi:type="File" fileName="logs/app.log" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile, logconsole" />
</rules>
</configuration>
এখানে, সমস্ত লগ logs/app.log
ফাইলে এবং কনসোলেও লেখা হবে, এবং লগ স্তর Info
বা তার ওপরে থাকা উচিত।
ASP.NET Core অ্যাপে NLog ব্যবহার করাProgram.cs
ফাইলে NLog কনফিগারেশন যোগ করতে হবে।
public class Program
{
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
config.AddJsonFile("nlog.config", optional: false, reloadOnChange: true);
})
.ConfigureLogging((context, logging) =>
{
logging.ClearProviders();
logging.SetMinimumLevel(LogLevel.Trace);
logging.AddNLog();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
লগিং ব্যবহারের উদাহরণ
অ্যাপ্লিকেশন কোডে NLog ব্যবহার করতে, ILogger
ইনজেক্ট করে লগিং করা যায়।
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Index page accessed at {Time}", DateTime.UtcNow);
return View();
}
}
Serilog একটি আধুনিক, পারফরম্যান্ট এবং সিম্পল লগিং ফ্রেমওয়ার্ক যা JSON ফরম্যাটে লগ তৈরি করতে সাহায্য করে এবং বিভিন্ন আউটপুট টার্গেটে রেকর্ড করতে পারে, যেমন কনসোল, ফাইল, ডাটাবেস, ইত্যাদি।
Serilog প্যাকেজ ইনস্টল করা
Serilog এবং Serilog.AspNetCore প্যাকেজ ইনস্টল করতে হবে।
NuGet CLI:
Install-Package Serilog.AspNetCore
.NET CLI:
dotnet add package Serilog.AspNetCore
Serilog কনফিগারেশন সেট করাProgram.cs
ফাইলে Serilog কনফিগারেশন করা হয়। এখানে, ফাইল এবং কনসোল আউটপুট টার্গেট ব্যবহার করা হয়েছে।
public class Program
{
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging((context, logging) =>
{
logging.ClearProviders();
logging.AddSerilog(new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("logs/app.log", rollingInterval: RollingInterval.Day)
.CreateLogger());
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
লগিং ব্যবহারের উদাহরণ
Serilog দিয়ে লগিং করতে, ILogger
ইনজেক্ট করে তা ব্যবহার করা যায়। উদাহরণস্বরূপ:
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Serilog: Index page accessed at {Time}", DateTime.UtcNow);
return View();
}
}
NLog এবং Serilog উভয়ই শক্তিশালী লগিং ফ্রেমওয়ার্ক যা ASP.NET Core অ্যাপ্লিকেশনে ব্যবহার করা যায়। NLog XML কনফিগারেশন ফাইল ব্যবহার করে বিভিন্ন আউটপুট টার্গেটের জন্য লগ তৈরি করতে সাহায্য করে, এবং Serilog JSON আউটপুট সরবরাহ করে যা বিশ্লেষণের জন্য আরও উপযুক্ত। দুইটি ফ্রেমওয়ার্কই ASP.NET Core অ্যাপ্লিকেশনে সহজে এক্সটেন্ড করা যায় এবং বিভিন্ন প্রয়োজনীয় লগ আউটপুট প্রদান করে।
common.read_more